import { getToken, setToken, removeToken } from '@/utils/auth'
import { loginApi, getInfoApi, sysUserIdApi } from '@/api/user'
const state = {
  //用户登录之后的标识
  token: getToken(),
  //保存用户信息
  userInfo: {}
}
const mutations = {
  //保存userInfo
  setUserInfo (state, userInfo) {
    state.userInfo = userInfo
  },
  //删除userInfo
  removeUserInfo (state) {
    staet.userInfo = {}
  },

  //设置token
  setToken (state, token) {
    state.token = token // 设置token 
    //保存到本地
    setToken(token) // vuex和 缓存数据的同步
  },
  //删除token
  removeToken (state) {
    state.token = null // 删除vuex的token
      removeToken() // 先清除 vuex  再清除缓存 vuex和 缓存数据的同步
  }
}
const actions = {
  //获取用户信息
  async getUserInfo ({ commit }) {
    //调用获取用户信息的接口
    const res = await getInfoApi()

    //调用获取员工基本信息的接口
    const result = await sysUserIdApi(res.userId)

    //将两个信息合并到一个对象中
    var newObj = { ...res, ...result }
    //保存用户信息
    commit('setUserInfo', newObj)

    //返回用户信息
    return newObj
  },
  //登录的方法
  async login ({ commit }, data) {
    //调用登录的接口
    const res = await loginApi(data)

    commit('setToken', res)
  },
  //退出的方法
  logout({commit}){
    commit('removeToken')
  }
}
export default {
  namespaced: true,
  state,
  mutations,
  actions
}
